﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;


namespace SFast.DB
{
    // 摘要:
    //     分页记录集接口
    public interface IPagination :  IEnumerable
    {
        /// <summary>
        /// 是否首页
        /// </summary>
        bool HasFirst { get; }
        
        /// <summary>
        /// 是否末页
        /// </summary>
        bool HasLast { get; }
       
        /// <summary>
        /// 是否支持下一页
        /// </summary>
        bool HasNext { get; }
        
        /// <summary>
        /// 是否可以进行分页（分页条件是PageCount > 1)
        /// </summary>
        bool HasPagination { get; }
        
        /// <summary>
        /// 是否支持上一页
        /// </summary>
        bool HasPrevious { get; }
        
        /// <summary>
        /// 当前页面记录数
        /// </summary>
        int Length { get; }
        
        /// <summary>
        /// 总页面数
        /// </summary>
        int PageCount { get; }

        /// <summary>
        /// 总记录数
        /// </summary>
        int TotalRowCount { get; }
        
        /// <summary>
        /// 页面索引号（从0开始）
        /// </summary>
        int PageIndex { get; }
        
        /// <summary>
        /// 页面编号（从1开始）
        /// </summary>
        int PageNumber { get; }
        
        /// <summary>
        /// 页面大小
        /// </summary>
        int PageSize { get; }
       
        /// <summary>
        /// 起始行索引号（从0开始）Skip中所用
        /// </summary>
        int StartRowIndex { get; }
        
        /// <summary>
        /// 总记录数
        /// </summary>
        int RowCount { get; }

        /// <summary>
        /// 数据
        /// </summary>
        IEnumerable Data { get; }

        ///// <summary>
        ///// 有分页数据的model
        ///// </summary>
        //PageinationModel WebData { get; }
    }

    public interface IPagination<T> : IEnumerable<T>, IPagination
    {
 
    }
}
